Simple PubMed MCP

Simple PubMed介绍与安装

1. 这是什么?适合解决什么问题?

MCP Simple PubMed 是一个 MCP(Model Context Protocol)服务器:把 PubMed/PMC(通过 NCBI Entrez API) 的检索与内容获取能力,封装成“工具(tools)”,让支持 MCP 的 AI 客户端(如 Claude Desktop、OpenCode 等)可以像调用函数一样调用 PubMed。

它特别适合眼科生信(单细胞/多组学整合)中常见的“高频、重复、需要结构化输出”的文献工作,例如:

你的研究背景(眼科 + 单细胞/多组学)里,文献检索往往不是难在“搜到”,而是难在把检索策略标准化 + 把结果结构化沉淀到知识库。这个 MCP 的价值在于“把检索/摘要/(可用时)全文 XML 获取”变成可自动化的步骤。


2. 它能做什么 / 不能做什么(务实边界)

2.1 核心能力(Tools)

通常包含三类能力(以 MCP 工具形式提供):

  1. Search PubMed:按关键词、MeSH、作者、日期范围、布尔逻辑等检索
  2. Access Abstracts:获取摘要与元数据(PMID、期刊、年份、作者等)
  3. Get Full Text(当可用):如果论文在 PubMed Central(PMC)开源,可取到全文(往往是 XML 结构化文本,对 AI 处理友好)

(安装与配置在 PyPI 项目页有标准写法。)1

2.2 重要限制


3. 安装与配置(以你当前 Windows 11 + WSL2 + conda 为主)

下面给一个建议做法:在 WSL2 的 conda 环境里安装并运行 MCP 服务器(更贴合你现有生信环境)。

3.1 在 WSL2(Ubuntu)创建环境并安装

# 1) 创建独立环境(避免污染你的单细胞主环境)
conda create -n mcp-pubmed python=3.11 -y
conda activate mcp-pubmed

# 2) 安装
pip install -U pip
pip install mcp-simple-pubmed

# 3) 简单自检(不保证所有包都有 __version__,所以用 import 即可)
python -c "import mcp_simple_pubmed; print('mcp_simple_pubmed import OK')"

3.2 准备 NCBI 必需环境变量

该服务需要:

在 WSL 里(建议写入 ~/.bashrc 或项目 .env,但不要提交到 Git):

export PUBMED_EMAIL="your-email@example.com"
export PUBMED_API_KEY="your-api-key"   # 可选

4. 在 Obsidian 里怎么用:推荐的“可复现文献检索”笔记模板

建议每次检索都落一个 note,最关键的是:把检索式、日期范围、执行日期、筛选规则写清楚,后续你做系统综述/补充检索时不会丢上下文。

4.1 Obsidian 笔记模板(可直接复制)

---
type: pubmed-search
topic: "retina scRNA-seq multiome integration"
date_run: 2026-02-05
date_range: "2019-01-01 ~ 2026-02-05"
species: [human, mouse]
tissues: [retina, RPE, choroid, optic_nerve]
keywords:
  - single-cell
  - multiome
  - scRNA-seq
  - scATAC-seq
  - spatial transcriptomics
  - integration
---

## Question / Goal
- 我想回答的问题是:

## Search strategy (copy/paste)
- PubMed query(最终版):
- 备注(MeSH、同义词、排除词、日期限制):

## Results (structured)
| PMID | Year | Title | Journal | Key tech | Data accession | Notes |
|------|------|-------|---------|----------|----------------|-------|

## Triage decision
- Included:
- Excluded (+ reason):

## Extracted methods / parameters (for downstream bioinfo)
- 样本来源:
- 细胞数/批次设计:
- 平台(10x/SMART-seq/Visium/CITE/多组学):
- 预处理与整合方法(Seurat/Scanpy/scVI/Harmony/LIGER/totalVI/ArchR等):
- 关键 marker / pathway:

5. 与 OpenCode(opencode)联动:把 PubMed 工具接到“终端智能体”里

OpenCode 是一个可在终端/桌面运行的 AI coding agent,并且支持通过 MCP 挂载外部工具。2

5.1 OpenCode 的 MCP 配置要点(重要:用 mcp 字段)

OpenCode 官方文档里,MCP servers 配在 opencode.json/opencode.jsoncmcp 下,既支持本地(local)也支持远程(remote)。3

5.2 推荐联动方案 A(最稳):OpenCode 也在 WSL 里跑

  1. 在 WSL 安装 OpenCode(按其官方安装方式)
  2. 在你的“文献/分析项目目录”根目录放一个 opencode.json

示例 opencode.jsonc关键:用 bash -lc 激活 conda 后再启动):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "simple_pubmed": {
      "type": "local",
      "command": [
        "bash",
        "-lc",
        "source ~/miniconda3/etc/profile.d/conda.sh && conda activate mcp-pubmed && python -m mcp_simple_pubmed"
      ],
      "enabled": true,
      "environment": {
        "PUBMED_EMAIL": "your-email@example.com",
        "PUBMED_API_KEY": "{env:PUBMED_API_KEY}"
      }
    }
  }
}

说明:上面把 PUBMED_API_KEY 放到系统环境变量里(而不是写死在配置文件),更安全。

然后你就可以在 OpenCode 对话里说类似:

5.3 推荐联动方案 B:做一个 OpenCode 自定义命令 /pubmed

OpenCode 支持把常用工作流做成 custom commands(Markdown/YAML frontmatter 模板),用 /命令 一键触发。4

在项目目录创建:.opencode/commands/pubmed.md

---
description: PubMed search + summarize for ophthalmology bioinfo
agent: plan
---

你现在是我的眼科生信文献助理。

目标:围绕「$ARGUMENTS」做一次可复现 PubMed 检索,并输出 Obsidian 可直接粘贴的结果表格。

要求:
1) 先给出 1 个“精简检索式”和 1 个“系统综述级检索式”(含 MeSH + 同义词 + 排除词建议)
2) 使用 simple_pubmed 工具执行检索(use simple_pubmed),返回 Top 25(按相关性或近年优先)
3) 输出 markdown 表格:PMID / Year / Title / Key tech / Disease(or tissue) / Accession / 1-sentence takeaway
4) 最后给出:下一步我该精读的 5 篇(说明理由:方法/数据/可复现性/与单细胞整合相关性)

开始执行。

使用方式(在 OpenCode TUI 中):


6. 面向“眼科单细胞/多组学整合”的检索用法建议(可直接复用)

下面是一些“高命中率”的检索构造思路(你可以让 MCP Prompts 帮你生成,也可以手写):

6.1 主题:视网膜单细胞图谱 + 疾病对照

6.2 主题:多组学整合(RNA+ATAC / CITE / multiome)

6.3 主题:空间转录组与单细胞对齐(retina 常用)


7. 实操小贴士(避免踩坑)

  1. 先拿摘要做分层:把“方法学/数据资源型论文”优先级拉高(对你做整合最有用)。
  2. 把检索式当作实验参数:固定日期范围、写清纳排标准;否则你以后很难解释“为什么这批论文被选中”。
  3. 全文抓不到不等于不可读:MCP 拿不到全文时,用 PMID/DOI 去图书馆或浏览器手动补齐是常态。
  4. 控制上下文开销:OpenCode 文档提示 MCP 会增加上下文占用,别一次启用太多 MCP servers;建议为“文献 agent”单独启用 simple_pubmed。3

安装后的使用

开启 mcp-simple-pubmed 的方式取决于你用它的MCP 客户端是谁:一般不是你“手动开一个长期后台服务”,而是由客户端按配置自动拉起。下面给你三种最常见的开启方式(含排错)。


0) 先确认环境变量(必需)

在你安装它的同一个环境(WSL/conda 或 Windows Python)里确认:

WSL/Ubuntu

echo $PUBMED_EMAIL
echo $PUBMED_API_KEY

若为空,先设置(临时):

export PUBMED_EMAIL="your-email@example.com"
export PUBMED_API_KEY="your-api-key"   # 可选

1) 方式 A:在终端手动启动(用于自检/调试)

如果你只是想确认“能启动”,在安装它的环境里执行:

WSL + conda(示例)

conda activate mcp-pubmed
python -m mcp_simple_pubmed

现象说明:

如果一启动就报错,常见原因:


2) 方式 B:让 OpenCode 自动拉起(推荐你这种“生信工作流”)

你不需要手动开服务,只要在项目里配好 opencode.json(c),然后启动 OpenCode,它会自动拉起 MCP。

示例(WSL 里跑 OpenCode 时最稳):

{
  "mcp": {
    "simple_pubmed": {
      "type": "local",
      "enabled": true,
      "command": [
        "bash",
        "-lc",
        "source ~/miniconda3/etc/profile.d/conda.sh && conda activate mcp-pubmed && python -m mcp_simple_pubmed"
      ],
      "environment": {
        "PUBMED_EMAIL": "your-email@example.com",
        "PUBMED_API_KEY": "{env:PUBMED_API_KEY}"
      }
    }
  }
}

然后你启动 OpenCode(在该项目目录下),工具列表里出现 simple_pubmed 就表示“开启成功”。


3) 方式 C:Claude Desktop 自动拉起

同样原则:配置好 claude_desktop_config.json 后重启 Claude Desktop,它会自动启动该 MCP server。

如果你的 mcp-simple-pubmed 安装在 Windows Python

配置里 command 直接指向 Windows 的 python.exe,然后重启 Claude Desktop 即可。

如果你安装在 WSL(而 Claude Desktop 在 Windows)

你可以让 Claude Desktop 通过 wsl.exe 去启动(示例思路):

{
  "mcpServers": {
    "simple-pubmed": {
      "command": "wsl.exe",
      "args": [
        "-d", "Ubuntu-24.04",
        "bash", "-lc",
        "source ~/miniconda3/etc/profile.d/conda.sh && conda activate mcp-pubmed && python -m mcp_simple_pubmed"
      ],
      "env": {
        "PUBMED_EMAIL": "your-email@example.com",
        "PUBMED_API_KEY": "your-api-key"
      }
    }
  }
}

重启 Claude Desktop 后,在可用工具(tools)里能看到 PubMed 相关工具就表示已开启。


我需要你补充一句:你准备用哪个客户端来调用它?

你现在是要在 OpenCode 里用,还是 Claude Desktop,或是其它 MCP 客户端?